package upcweb.web;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import upcweb.exception.WebDAOException;
import upcweb.modelo.ClsComentarioOferta;
import upcweb.modelo.ClsOferta;
import upcweb.modelo.ClsServicio;
import upcweb.modelo.ClsUsuario;
import upcweb.negocio.BsGestionComentarios;
import upcweb.negocio.BsGestionOfertas;
import upcweb.negocio.BsGestionServicio;
import upcweb.util.CheckLogin;
import upcweb.util.ClsReturn;
import upcweb.util.Validaciones;

@Controller
public class OfertasController {

	@RequestMapping(value = "/listarOfertas", method = RequestMethod.POST)
	protected ModelAndView listarOfertas(){
		return new ModelAndView("mvListarOfertas");
	}
	
	@RequestMapping(value = "/verOferta", method = RequestMethod.POST)
	protected ModelAndView verOferta(HttpServletRequest request,
			HttpServletResponse response){				
		return new ModelAndView("mvViewOferta");
	}
	
	@RequestMapping( value = "/opComentarios", method = RequestMethod.POST)
	protected ModelAndView operarComentarios(HttpServletRequest request,
			HttpServletResponse response){
		String oper = request.getParameter("operacion");
		ClsReturn ret  = new ClsReturn();
		
		ClsComentarioOferta clsCom = new ClsComentarioOferta();
		try {
			clsCom.setNo_usuario(new CheckLogin().getSession(request, response).getNo_usuario());
		} catch (Exception e) {
			// TODO: handle exception
			System.err.println("No user : " + e.getMessage());
		}
		BsGestionComentarios bsOfertas = new BsGestionComentarios();
		
		String oferta= "", txt = "", coment = ""; 
		int check = 0;
		if (oper.equalsIgnoreCase("add")){
			 oferta = request.getParameter("oferta");
			 txt    = request.getParameter("texto");
			clsCom.setNo_Oferta(oferta);
			clsCom.setTx_comentario(txt);
			ret  = bsOfertas.addComentarioOferta(clsCom);
		}
		else if (oper.equalsIgnoreCase("edit")){
			
		}
		else if (oper.equalsIgnoreCase("like"))	{			
			oferta = request.getParameter("oferta");
			coment = request.getParameter("comen");	
			check = Integer.parseInt(request.getParameter("value"));
			clsCom.setNo_Oferta(oferta);
			clsCom.setCheck(check);
			clsCom.setNo_comentario(Integer.parseInt(coment));
			ret = bsOfertas.likeComentarioOferta(clsCom);
		}
		else if (oper.equalsIgnoreCase("dislike"))	{			
			oferta = request.getParameter("oferta");
			coment = request.getParameter("comen");	
			check = Integer.parseInt(request.getParameter("value"));
			clsCom.setNo_Oferta(oferta);
			clsCom.setCheck(check);
			clsCom.setNo_comentario(Integer.parseInt(coment));
			ret = bsOfertas.dislikeComentarioOferta(clsCom);
		}
		else if (oper.equalsIgnoreCase("del")){			
			oferta = request.getParameter("oferta");
			coment = request.getParameter("comen");			
			clsCom.setNo_Oferta(oferta);
			clsCom.setNo_comentario(Integer.parseInt(coment));			
			ret  = bsOfertas.delComentarioIferta(clsCom);
		}
		ModelAndView view = new ModelAndView("comentarios/resultComentario");
		view.addObject("return",ret );
		view.addObject("operacion", oper);
		return view;
	}
	@RequestMapping(value = "/listadoOfertas", method = RequestMethod.POST)
	protected ModelAndView listadoOfertas(HttpServletRequest request,
			HttpServletResponse response){
		BsGestionOfertas bsOferta = new BsGestionOfertas();
				
		List<ClsOferta> olstOferta = new ArrayList<ClsOferta>();
		ClsOferta clsOf = new ClsOferta();		
		clsOf.setNo_descripcion("");
		clsOf.setFl_activo("2");
		int item = 1;
		try {
			olstOferta = bsOferta.Oferta_Sells(clsOf);
		} catch (Exception e) {
			e.printStackTrace();
		}
		ModelAndView mdview = new ModelAndView("ofertacliente/ListadoOfertas");
		mdview.addObject("olstOferta",olstOferta);
		return mdview;
	}
	
	@RequestMapping(value = "/listadoOfertasFiltro", method = RequestMethod.POST)
	protected ModelAndView listadoOfertasFiltro(HttpServletRequest request,
			HttpServletResponse response){
		
		ModelAndView mdview = new ModelAndView("ofertacliente/ListadoOfertas");
		
		ClsOferta clsOf = null;
		BsGestionOfertas bsOferta = null;
		String strDescr= request.getParameter("no_descripcion");
		String strFlag = request.getParameter("Fl_activo");		
		
		bsOferta = new BsGestionOfertas();
		List<ClsOferta> olstOferta = new ArrayList<ClsOferta>();
		clsOf = new ClsOferta();		
		clsOf.setNo_descripcion(strDescr);
		clsOf.setFl_activo(strFlag);
		int item = 1;
		try {
			olstOferta = bsOferta.Oferta_Sells(clsOf);
		} catch (Exception e) {
			e.printStackTrace();
		}
			
		mdview.addObject("olstOferta",olstOferta);
		mdview.addObject("txt_Descripcion",strDescr);
		mdview.addObject("cbo_Estado",strFlag);
		
		return mdview;
	}
	
	
	
	@RequestMapping(value = "/listadoOfertasPost", method = RequestMethod.POST)
	protected ModelAndView listadoOfertasPost(HttpServletRequest request,
			HttpServletResponse response){
		
		String strMensaje = "";
		
		ClsOferta clsOf = null;
		BsGestionOfertas bsOferta = null;
		Validaciones oUtil =  new Validaciones();
		
		String strOper = request.getParameter("p_oper");
		String strco_oferta = request.getParameter("p_co_oferta");
		String strFlag = request.getParameter("Fl_activo");		
		String strfecIni = "";
		String strfecFin = "";
		String strdescripcion = "";
		String strco_servicio = "";
		String strUbi = "";
		//Si se elimina una oferta
		CheckLogin chkLog = new CheckLogin();
		ClsUsuario usr = chkLog.getSession(request, response);
		String strUsuario = usr.getNo_usuario();
		
		if (strUsuario == null){			
			strUsuario ="Sin Nombre";
		}
		
		if(strOper != null){
			if(strOper.equalsIgnoreCase("eliminar")){
				clsOf = new ClsOferta();
				clsOf.setInt_co_oferta(Integer.parseInt(strco_oferta));
				bsOferta = new BsGestionOfertas();
				bsOferta.Oferta_del(clsOf);
				
			}else if(strOper.equalsIgnoreCase("editar")){				
				strfecIni = request.getParameter("fecIni");
				strfecFin = request.getParameter("fecFin");
				strdescripcion = request.getParameter("descripcion");
				strco_servicio = request.getParameter("co_servicio");
				strUbi = request.getParameter("cbo_Ubi");
				
				strfecIni = oUtil.dmyToymd(strfecIni);
				strfecFin = oUtil.dmyToymd(strfecFin);
					
				
				clsOf = new ClsOferta();
				clsOf.setInt_co_oferta(Integer.parseInt(strco_oferta));
				//clsOf.setFe_caducidad(strfecFin);				
				clsOf.setNo_descripcion(strdescripcion);
				clsOf.setNo_ubic_page(strUbi);
				clsOf.setCo_servicio("300");				
				clsOf.setFe_creacion(strfecIni);
				clsOf.setFe_inicio(strfecIni);
				clsOf.setFe_final(strfecFin);
				clsOf.setInt_co_servicio(Integer.parseInt(strco_servicio));				
				clsOf.setFl_activo(strFlag);
				clsOf.setNo_usuario(strUsuario);
				
				bsOferta = new BsGestionOfertas();
				try {
					bsOferta.Oferta_upd(clsOf);
					strMensaje = "Actualizado satisfactoriamente.";
				} catch (Exception e) {
					e.printStackTrace();
					strMensaje = "Error al actualizar.";
					 
				}
				
				
			}else if(strOper.equalsIgnoreCase("nuevo")){
				strfecIni = request.getParameter("fecIni");
				strfecFin = request.getParameter("fecFin");
				strdescripcion = request.getParameter("descripcion");
				strco_servicio = request.getParameter("co_servicio");
				strUbi = request.getParameter("cbo_Ubi");
				
				strfecIni = oUtil.dmyToymd(strfecIni);
				strfecFin = oUtil.dmyToymd(strfecFin);
				
				clsOf = new ClsOferta();

				//clsOf.setFe_caducidad(strfecFin);				
				clsOf.setNo_descripcion(strdescripcion);
				clsOf.setNo_ubic_page(strUbi);
				clsOf.setCo_servicio("300");				
				clsOf.setFe_creacion(strfecIni);
				clsOf.setFe_inicio(strfecIni);
				clsOf.setFe_final(strfecFin);
				clsOf.setInt_co_servicio(Integer.parseInt(strco_servicio));
				clsOf.setFl_activo("1");
				clsOf.setNo_usuario(strUsuario);
				
				bsOferta = new BsGestionOfertas();
				try {
					bsOferta.Oferta_ins(clsOf);
					strMensaje = "Grabado satisfactoriamente.";
				} catch (WebDAOException e) {
					strMensaje = "Error al insertar la oferta.";
					e.printStackTrace();
				}
				
			}
			
		}
		
		List<ClsOferta> olstOferta = new ArrayList<ClsOferta>();
		clsOf = new ClsOferta();		
		clsOf.setNo_descripcion("");
		clsOf.setFl_activo("2");
		int item = 1;
		try {
			olstOferta = bsOferta.Oferta_Sells(clsOf);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		ModelAndView mdview = new ModelAndView("ofertacliente/ListadoOfertas");
		mdview.addObject("olstOferta",olstOferta);	
		mdview.addObject("Mensaje",strMensaje);		
		return mdview;
	}
	
	
	@RequestMapping(value = "/mantenimientoOfertas2", method = RequestMethod.POST)
	protected ModelAndView mantenimientoOfertas2(HttpServletRequest request,
			HttpServletResponse response){
		
		List<ClsOferta> olstOferta = new ArrayList<ClsOferta>();
		ClsOferta oOferta = new ClsOferta();
		BsGestionOfertas bsOferta = new BsGestionOfertas();
		
		String strOper = request.getParameter("p_oper");
		String strco_oferta = request.getParameter("p_co_oferta");
		
		if( strOper.equalsIgnoreCase("editar")){
			ClsOferta clsOf = new ClsOferta();
			clsOf.setInt_co_oferta(Integer.parseInt(strco_oferta));
			try {
				olstOferta = bsOferta.Oferta_Sell(clsOf);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else if ( strOper.equalsIgnoreCase("nuevo")){
			olstOferta.add(oOferta);
			
		}
		
		List<ClsServicio> lstServicio = new ArrayList<ClsServicio>();
		String parametros[]= new String[2];
		parametros[0]= "";
		parametros[1]= "2";	
		BsGestionServicio oBSGServicio= new BsGestionServicio();
		try {
			lstServicio = oBSGServicio.listarxFiltro(parametros);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		ModelAndView mdview = new ModelAndView("ofertacliente/MantenimientoOferta");
		mdview.addObject("olstOferta",olstOferta);
		mdview.addObject("olstServicio",lstServicio);
		mdview.addObject("p_oper",strOper);
		return mdview;
	}
	
	
	
}

	

































